home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / tex / style / misc / bar.sty < prev    next >
Text File  |  1995-11-25  |  17KB  |  543 lines

  1. %    BAR.STY --- Style File zum Setzen von Balkendiagrammen
  2. %    Autor:    J. Bleser, E. Lang
  3. %    Hochschulrechenzentrum
  4. %    Technische Hochschule Darmstadt
  5. %    !!!  Dieses Style-File ist urheberrechtlich geschuetzt    !!!
  6. %    !!!  Aenderungen nur mit Zustimmung der Autoren     !!!
  7. \typeout{Option BAR, Version 1.0  Sep. 92, J.Bleser, TH Darmstadt, HRZ}
  8. \newcount\breite    \newcount\hoehe     \newcount\tiefe
  9. \newcount\lhoehe    \newcount\anzbar    \newcount\hbarI
  10. \newcount\xpos        \newcount\lxpos     \newcount\halfbreite
  11. \newcount\ypos        \newcount\lypos
  12. \newcount\tmpa        \newcount\tmpb           \newcount\tmpc
  13. \newcount\tmpd        \newcount\tmpe
  14. \newcount\xmin        \newcount\xmax        \newcount\xstep
  15. \newcount\deltax    \newcount\yhoehe    %
  16. \newcount\ymin        \newcount\ymax        \newcount\ystep
  17. \newcount\yminII    \newcount\ymaxII    \newcount\deltay
  18. \newcount\ymove     \newcount\xmove     \newcount\inter
  19. \newcount\exact     \newcount\xexact
  20. \newdimen\dtmpa     \newdimen\dtmpb
  21. \newdimen\dmin        \newdimen\dmax        \newdimen\dstep
  22. \newdimen\dxmin     \newdimen\dxmax     \newdimen\dxstep
  23. \newdimen\faktor    \newdimen\dinter
  24. \newbox\mybox        \newbox\xbox        \newbox\ybox
  25. \newif\if@xaxis     \newif\if@yaxis
  26. \newif\if@hlineon
  27. \newif\iffaktor\faktorfalse
  28.  
  29.  
  30. \def\setnumberpos#1{\def\my@number{\expandafter\csname my@#1\endcsname}}
  31. \def\my@number{\my@outside}
  32.  
  33.  
  34. \def\m@nth{month}\def\d@y{day}
  35. \def\setxvaluetyp#1{\gdef\x@value{#1}%
  36.   \ifx\x@value\m@nth\let\myx@value\Monat@%
  37.   \else\ifx\x@value\d@y\let\myx@value\Tag@%
  38.   \else\let\myx@value\Zahl@n%
  39.   \fi%
  40.   \fi%
  41. }
  42.  
  43.  
  44. \def\solid{solid}\gdef\l@style{\relax}
  45. \def\setlinestyle#1{\gdef\l@style{#1}%
  46.   \ifx\l@style\solid\let\my@lstyle=\mylinebox%
  47.   \else\let\my@lstyle=\mydotbox%
  48.   \fi%
  49. }
  50.  
  51.  
  52. \def\setwidth#1{\global\breite=#1%
  53.   \ifdim\dinter>0pt\inter\dinter\multiply\inter\breite\divide\inter65536\fi%
  54.   \halfbreite\breite\divide\halfbreite2%
  55. }
  56.  
  57.  
  58. \def\setdepth#1{\ifnum#1<10\global\tiefe=0\else\global\tiefe=#1\fi}
  59.  
  60.  
  61. \def\setstretch#1{\global\faktor=#1pt\faktortrue}
  62.  
  63.  
  64. \def\setstyle#1{\def\my@style{#1}}
  65. \def\my@style{\tt}
  66.  
  67.  
  68. \def\setprecision#1{\global\exact=#1}
  69. \exact=0
  70.  
  71.  
  72. \def\sethspace#1{\dinter#1pt\dtmpa#1pt\multiply\dtmpa\breite%
  73.   \inter\dtmpa\divide\inter65536%
  74. }
  75.  
  76.  
  77. \def\setxname{\@ifnextchar [{\isetxname}{\isetxname[]}}
  78. \def\isetxname[#1]#2{\global\setbox\xbox=\hbox{\makebox(0,0)[#1]{#2}}}
  79.  
  80.  
  81. \def\setyname{\@ifnextchar [{\isetyname}{\isetyname[l]}}
  82. \def\isetyname[#1]#2{\global\setbox\ybox=\hbox{\makebox(0,0)[#1]{#2}}}
  83.  
  84.  
  85. \newcount\vorz         %
  86. \def\setyaxis{\@ifnextchar [{\i@setyaxis}{\i@setyaxis[0]}}
  87. \def\i@setyaxis[#1]#2#3#4{%
  88.  \dmin#2\faktor\ymin\dmin\divide\ymin by65536%
  89.  \dmax#3\faktor\ymax\dmax\divide\ymax by65536%
  90.  \ifnum\ymin>\ymax\vorz-1\else\vorz1\fi%
  91.  \ifnum\ymin>0\ymin-\ymin\fi%
  92.  \ifnum\ymax<0\ymax-\ymax\fi%
  93.  \dstep#4\faktor\ystep\dstep\divide\ystep by65536%
  94.  \ifnum\ystep<0\ystep-\ystep\fi%
  95.  \@yaxistrue%
  96.  \setbox0=\hbox{\the\ymax}\setbox1=\hbox{\the\ymin}
  97.  \ifdim\wd0>\wd1\xmove=\wd0\else\xmove=\wd1\fi%
  98.  \divide\xmove by65536\advance\xmove by4%
  99.  \global\xmove=\the\xmove%
  100.  \deltay\ymax\advance\deltay-\ymin\tmpb\deltay%
  101.  \divide\deltay\ystep%
  102.  \advance\deltay by1%
  103.  \dmin=#2pt\dstep=#4pt%
  104.  \thicklines%
  105.  \multiput(0,\ymin)(0,\ystep){\deltay}{\line(-1,0){4}%
  106.    \put(-6,0){\makebox(0,0)[r]{{\my@style\dimIIreal\dmin}}%
  107.    \global\advance\dmin by\dstep}}%
  108.  \dtmpa=#1\faktor\ymove\dtmpa\divide\ymove by65536\ifnum\ymove<0\ymove=0\fi%
  109.  \tmpa\ymin\advance\tmpa by-\ymove\advance\tmpb by\ymove%
  110.  \global\yhoehe\tmpb        %
  111.  \put(0,\tmpa){\line(0,1){\tmpb}}%
  112.  \thinlines%
  113. }
  114.  
  115.  
  116. \def\setxaxis#1#2#3{%
  117.  \dxmin#1pt\dxmax#2pt\dxstep#3pt\global\xexact\exact%
  118.  \@xaxistrue\let\mytmp@style=\my@style%
  119. }
  120.  
  121.  
  122. \def\hlineon{\global\@hlineontrue}
  123.  
  124.  
  125. \def\bar#1#2{\@ifnextchar [{\@bar{#1}{#2}}{\@bar{#1}{#2}[]}}
  126. \def\@bar#1#2[#3]{%
  127.  \dtmpa#1\faktor\hoehe\dtmpa\divide\hoehe by65536%
  128.  \multiply\hoehe\vorz%
  129.  \ypos0\def\@user{#1}%
  130.  \ifnum\hoehe<\yminII\yminII=\hoehe\fi\ifnum\hoehe>\ymaxII\ymaxII=\hoehe\fi%
  131.  \ifnum\anzbar=0\hbarI=\hoehe\fi%
  132.  \ifnum#2>-1%
  133.    \ifnum\hoehe<0\ypos=\hoehe\tmpa=-\hoehe\else\tmpa=\hoehe\fi%
  134.    \ifnum #2=1\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}\fi%
  135.    \ifnum #2=2\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  136.      \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
  137.      \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
  138.    \fi
  139.    \ifnum #2=3\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  140.      \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
  141.      \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
  142.    \fi
  143.    \ifnum #2=4\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  144.      \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
  145.      \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
  146.      \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
  147.      \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
  148.    \fi
  149.    \ifnum #2=5\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  150.      \tmpc=\breite\divide\tmpc by4\tmpb=\xpos\advance\tmpb by1%
  151.      \multiput(\tmpb,\ypos)(4,0){\tmpc}{\rule{2pt}{\tmpa pt}}%
  152.      \tmpc=\tmpa\divide\tmpc by4\tmpb=\ypos\advance\tmpb by1%
  153.      \multiput(\xpos,\tmpb)(0,4){\tmpc}{\rule{\breite pt}{2pt}}%
  154.    \fi
  155.    \ifnum #2=6\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  156.      \tmpb=\breite\divide\tmpb by-2%
  157.      \ifnum\hoehe>0\advance\tmpb by\tmpa\fi%
  158.      \tmpc=\tmpa\divide\tmpc by4%
  159.      \multiput(\xpos,\ypos)(0,4){\tmpc}{%
  160.        \ifdim\@ydim<\tmpb pt\line(2,1){\breite}%
  161.        \else\tmpd=\@ydim\divide\tmpd by65536%
  162.      \ifnum\tmpd<0\else\advance\tmpd by-\tmpa\fi%
  163.      \multiply\tmpd by-2\line(2,1){\tmpd}%
  164.        \fi%
  165.      }%
  166.      \tmpb=\breite\divide\tmpb by8\tmpc=\breite\advance\tmpc by-8%
  167.      \tmpd=\tmpa\multiply\tmpd 2\advance\xpos by 8%
  168.      \multiput(\xpos,\ypos)(8,0){\tmpb}{%
  169.        \ifnum\tmpc<\tmpd\line(2,1){\tmpc}\else\line(2,1){\tmpd}\fi%
  170.        \global\advance\tmpc by-8%
  171.      }%
  172.      \advance\xpos by -8%
  173.    \fi%
  174.    \ifnum #2=7\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
  175.      \tmpb=\breite\divide\tmpb by2%
  176.      \ifnum\hoehe>0\ypos=\hoehe\else\ypos=0\advance\tmpb by-\tmpa\fi%
  177.      \tmpc=\tmpa\divide\tmpc by4%
  178.      \multiput(\xpos,\ypos)(0,-4){\tmpc}{%
  179.        \ifdim\@ydim<\tmpb pt\tmpd=\@ydim\divide\tmpd by65536%
  180.      \ifnum\tmpd<0\advance\tmpd by\tmpa\fi%
  181.      \multiply\tmpd by2\line(2,-1){\tmpd}%
  182.        \else\line(2,-1){\breite}%
  183.        \fi%
  184.      }%
  185.      \tmpb=\breite\divide\tmpb by8\advance\tmpb by 1\tmpc=\breite%
  186.      \tmpd=\tmpa\multiply\tmpd 2%
  187.      \multiput(\xpos,\ypos)(8,0){\tmpb}{%
  188.        \ifnum\tmpc>\tmpd\line(2,-1){\tmpd}\else\line(2,-1){\tmpc}\fi%
  189.        \global\advance\tmpc by-8%
  190.      }%
  191.    \fi%
  192.    \ifnum #2=8\put(\xpos,\ypos){\rule{\breite pt}{\tmpa pt}}\fi
  193.    \my@number%
  194.  \fi%
  195.  \tmpc-\baselineskip\divide\tmpc 65536%
  196.  \divide\tmpc 2%
  197.  \put(\xpos,\ypos){\put(0,\tmpc){\makebox(\breite,0){#3}}}%
  198.  \ifnum\anzbar>0
  199.   \ifnum\tiefe>0
  200.     \ifnum\lhoehe<\hoehe
  201.     \ifnum\lhoehe>0\machDachI(\lxpos,\lhoehe)
  202.     \else\machDachI(\lxpos,0)
  203.     \fi
  204.     \else
  205.     \ifnum\lhoehe>0\machDachII(\lxpos,\lhoehe)
  206.     \else\machDachII(\lxpos,0)
  207.     \fi
  208.     \fi%
  209.   \fi%
  210.   \if@hlineon\machHLines\fi%
  211.  \fi%
  212.  \lxpos\xpos\advance\xpos\breite\advance\xpos\inter%
  213.  \advance\anzbar1\lhoehe\hoehe%
  214. }
  215.  
  216.  
  217. \newenvironment{barenv}%
  218. {\par%
  219.  \xpos0\breite40\halfbreite20\tiefe0\lhoehe0\anzbar0%
  220.  \yminII0\ymaxII0\inter0\dinter0pt\vorz1%
  221.  \exact0\ymove0\xmove0\unitlength1pt\@xaxisfalse\@yaxisfalse\@hlineonfalse%
  222.  \let\my@lstyle=\mydotbox\let\myx@value=\Zahl@n%
  223.  \faktor1pt%
  224.  \def\vline{\my@vline}%
  225.  \def\hspace{\my@hspace}%
  226.  \setbox\@tempboxa=\hbox\bgroup%
  227.    \begin{picture}(0,0)\thinlines%
  228. }%
  229. {%
  230.    \advance\xpos by-\inter%
  231.    \ifnum\tiefe>0
  232.      \put(\xpos,0){\line(1,1){\tiefe}}%
  233.      \put(\xpos,\hoehe){\line(1,1){\tiefe}\put(0,\tiefe){\line(0,1){-\hoehe}}}%
  234.    \fi%
  235.    \deltax=\lhoehe\bar{0}{-1}\lhoehe=\deltax%
  236.    \thicklines%
  237.    \if@yaxis\else\tmpa=\ymaxII\advance\tmpa by-\yminII\advance\tmpa by\tiefe%
  238.      \put(0,\yminII){\line(0,1){\tmpa}}%
  239.    \fi%
  240.    \if@xaxis%
  241.      \advance\ymin by-\ymove%
  242.      \tmpe=\exact\global\exact=\xexact%
  243.      \put(0,\ymin){\line(1,0){\lxpos}}%
  244.      \xstep=\dxstep\divide\xstep by65536%
  245.      \dtmpa=\dxmax\advance\dtmpa by-\dxmin%
  246.      \deltax=\dtmpa\divide\deltax by65536\divide\deltax by\xstep%
  247.      \advance\deltax by1%
  248.      \tmpa=\breite\divide\tmpa by2%
  249.      \tmpb=\breite\advance\tmpb by\inter%
  250.      \multiput(\tmpa,\ymin)(\tmpb,0){\deltax}{%
  251.        \line(0,-1){4}\myx@value\dxmin%
  252.        \global\advance\dxmin by\dxstep}%
  253.      \global\exact=\tmpe%
  254.    \fi%
  255.    \put(0,0){\line(1,0){\lxpos}}%
  256.    \if@xaxis\tmpa=-20\else\tmpa=-10\fi%
  257.    \ifvoid\xbox\else\put(\lxpos,\ymin){\put(0,\tmpa){\box\xbox}}\fi%
  258.    \tmpa=\ymax\advance\tmpa by6\advance\tmpa by\tiefe%
  259.    \ifvoid\ybox\else\put(\tiefe,\tmpa){\box\ybox}\fi%
  260.    \if@hlineon%
  261.      \ifnum\lhoehe<0%
  262.        \tmpb=-\ymin\advance\tmpb by\lhoehe%
  263.        \advance\tmpb by\ymove\divide\tmpb by\ystep%
  264.        \tmpa=\ymin\advance\tmpa by\tiefe\advance\tmpa by\ymove%
  265.        \multiput(\lxpos,\tmpa)(0,\ystep){\tmpb}{%
  266.      \ifdim\@ydim<\lhoehe pt%
  267.      \else\ypos=-\@ydim\divide\ypos by65536%
  268.           \advance\ypos by\lhoehe\advance\ypos by\tiefe%
  269.           \tmpe=\tiefe\advance\tmpe by-\ypos%
  270.           \ifnum\ypos>0\put(\tmpe,0){\thinlines\my@lstyle\ypos}\fi%
  271.      \fi%
  272.        }%
  273.      \fi%
  274.      \put(0,\ymin){\line(1,0){\lxpos}}%
  275.      \tmpa=\ymax\advance\tmpa by-\ymin%
  276.      \ifnum\tiefe>0
  277.        \put(0,\ymax){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\lxpos}%
  278.      \line(0,-1){\tmpa}\put(0,-\tmpa){\line(-1,-1){\tiefe}}}}%
  279.      \else\put(0,\ymax){\line(1,0){\lxpos}\line(0,-1){\tmpa}}%
  280.      \fi%
  281.      \thinlines%
  282.      \ifnum\hbarI<0\tmpa=-\ymin\advance\tmpa by\hbarI\advance\tmpa by-\tiefe%
  283.        \put(\tiefe,\tiefe){\line(0,1){\ymax}}%
  284.        \put(\tiefe,\hbarI){\line(0,-1){\tmpa}}%
  285.      \else\tmpa=\ymax\advance\tmpa by-\hbarI\advance\ymax by\tiefe%
  286.        \put(\tiefe,\ymax){\line(0,-1){\tmpa}}%
  287.        \ifnum\ymin<0\tmpa=\ymin%
  288.      \advance\tmpa by\tiefe\put(\tiefe,\tmpa){\line(0,1){-\tmpa}}%
  289.        \fi%
  290.      \fi%
  291.      \ifnum\hbarI<0\tmpa=\hbarI\tmpb=0\else\tmpa=0\tmpb=\hbarI\fi%
  292.      \tmpc=-\ymin\advance\tmpc \tmpa%
  293.      \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi
  294.      \ifnum\ymove>0\put(0,\ymin){\line(1,1){\tmpc}}\fi%
  295.      \advance\ymin by\ymove%
  296.      \multiput(0,\ymin)(0,\ystep){\deltay}{%
  297.        \ifdim\@ydim<\tmpa pt%
  298.      \tmpc=-\@ydim\divide\tmpc by65536\advance\tmpc by\tmpa%
  299.      \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi%
  300.      \ifx\l@style\solid\line(1,1){\tmpc}%
  301.      \else\divide\tmpc by 3\multiput(0,0)(3,3){\tmpc}{.}%
  302.      \fi%
  303.        \else\ifdim\@ydim>\tmpb pt%
  304.           \ifx\l@style\solid\line(1,1){\tiefe}%
  305.           \else\tmpe=\tiefe\divide\tmpe by3\multiput(0,0)(3,3){\tmpe}{.}%
  306.           \fi%
  307.         \fi%
  308.        \fi%
  309.      }%
  310.    \fi%
  311.    \thinlines%
  312.    \ifnum\ymaxII<\ymax\global\ymaxII=\ymax\else\global\ymaxII=\ymaxII\fi%
  313.    \ifnum\yminII>\ymin\global\yminII=\ymin\else\global\yminII=\yminII\fi%
  314.    \global\advance\yminII by-\ymove%
  315.    \global\xpos=\the\xpos\global\advance\xpos by20%
  316.    \end{picture}
  317.  \egroup%
  318.  \global\advance\ymaxII by\tiefe\advance\ymaxII by-\yminII%
  319.  \advance\xpos by-\breite%
  320.  \begin{picture}(\the\xpos,\the\ymaxII)
  321.   \put(\xmove,-\yminII){\box\@tempboxa}
  322.  \end{picture}
  323.  \faktorfalse
  324. }
  325.  
  326.  
  327. \def\legend#1#2{%
  328.  \begin{picture}(20,10)
  329.    \put(0,0){\framebox(20,10){}}
  330.    \ifnum #1=2\multiput(1,0)(3,0){7}{\line(0,1){10}}\fi%
  331.    \ifnum #1=3\multiput(0,1)(0,3){3}{\line(1,0){20}}\fi%
  332.    \ifnum #1=4\multiput(1,0)(3,0){7}{\line(0,1){10}}%
  333.      \multiput(0,1)(0,3){3}{\line(1,0){20}}%
  334.    \fi%
  335.    \ifnum #1=5\multiput(1,0)(4,0){5}{\rule{2pt}{10pt}}%
  336.      \multiput(0,2)(0,4){2}{\rule{20pt}{2pt}}%
  337.    \fi%
  338.    \ifnum #1=6%
  339.     \put(0,0){\line(2,1){20}}\put(0,4){\line(2,1){13}}\put(8,0){\line(2,1){12}}%
  340.    \fi%
  341.    \ifnum #1=7%
  342.     \put(0,10){\line(2,-1){20}}\put(0,6){\line(2,-1){12}}%
  343.     \put(8,10){\line(2,-1){12}}%
  344.    \fi%
  345.    \ifnum #1=8\put(0,0){\rule{20\unitlength}{10\unitlength}}\fi%
  346.  \end{picture}%
  347.  \quad#2%
  348. }
  349.  
  350.  
  351.  
  352. \def\my@vline{%
  353.   \tmpa\ymin\advance\tmpa-\ymove%
  354.   \put(\xpos,\tmpa){\line(0,1){\yhoehe}}
  355. }
  356.  
  357.  
  358. \def\my@hspace#1{%
  359.   \dtmpa#1pt\multiply\dtmpa\breite%
  360.   \tmpa\dtmpa\divide\tmpa65536%
  361.   \global\advance\xpos\tmpa
  362. }
  363.  
  364.  
  365.  
  366. \def\mydotbox#1{\tmpe=#1\advance\tmpe by2\lower0.8pt\hbox to\tmpe pt{\dotfill}}
  367.  
  368.  
  369. \def\mylinebox#1{\line(1,0){#1}}
  370.  
  371.  
  372. %  Parameter:  umzuwandelnde Dimension.
  373. \def\dimIIreal#1{%
  374.   \dtmpa=#1\tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
  375.   \the\tmpa\ifnum\exact>0,\fi%
  376.   \tmpb=\exact%
  377.   \@whilenum\tmpb>0\do{%
  378.     \advance\dtmpa by0.05pt\dtmpa=10\dtmpa\advance\dtmpa by-0.5pt%
  379.     \tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
  380.     \the\tmpa\advance\tmpb by-1}%
  381. }
  382.  
  383.  
  384. \def\machDachI(#1,#2){%
  385.  \tmpa=\hoehe\advance\tmpa by-#2\tmpd=\tmpa\ifnum\tmpd<0\tmpd=-\tmpd\fi%
  386.  \ifnum\hoehe<0\machDachII(#1,#2)%
  387.  \else
  388.    \tmpb=\breite\advance\tmpb by-\tiefe%
  389.    \advance\tmpb by\inter%
  390.    \ifnum\tmpa<\tiefe\advance\tmpa by-\tiefe\advance\tmpb by-\tmpa\fi%
  391.    \ifnum\tmpb>\breite\tmpb=\breite\fi%
  392.    \ifnum\breite<\tiefe\put(#1,#2){\line(1,1){\breite}}%
  393.    \else\put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\tmpb}}}%
  394.    \fi%
  395.  \fi%
  396.  \tmpa=#1\advance\tmpa by\breite%
  397.  \ifnum\inter>0%
  398.    \ifnum\tmpd<\inter\tmpb=\tiefe\else\tmpb=\inter\fi%
  399.    \put(\tmpa,\lhoehe){\line(1,1){\tmpb}}%
  400.  \fi%
  401.  \ifnum\lhoehe<0\put(\tmpa,\lhoehe){%
  402.    \ifnum\hoehe<0\tmpb=-\lhoehe\advance\tmpb by\hoehe%
  403.      \ifnum\tmpb>\tiefe\tmpa=\tiefe\else\tmpa=\tmpb\tmpb=0\fi%
  404.      \line(1,1){\tmpa}\put(0,\tmpa){\advance\tmpb by-\tiefe\line(0,1){\tmpb}}%
  405.    \else\tmpa=-\lhoehe\advance\tmpa by-\tiefe%
  406.      \ifnum-\lhoehe<\tiefe\tmpb=-\lhoehe\else\tmpb=\tiefe\fi%
  407.      \line(1,1){\tmpb}\put(0,\tmpb){\line(0,1){\tmpa}}%
  408.    \fi%
  409.   }%
  410.  \fi
  411. }
  412.  
  413.  
  414. \def\machDachII(#1,#2){%
  415.  \tmpa=#1\advance\tmpa by\breite\tmpb=0%
  416.  \ifnum\hoehe>0\ifnum\lhoehe<0\tmpb=\lhoehe\fi
  417.    \put(\tmpa,\tmpb){\line(1,1){\inter}}
  418.  \else\put(\tmpa,0){\line(1,1){\tiefe}}
  419.  \fi
  420.  \ifnum\hoehe<0\tmpa=\lhoehe\else\tmpa=\lhoehe\advance\tmpa by-\hoehe\fi
  421.  \ifnum\tmpa<0\tmpa=\inter\else\advance\tmpa by\inter\fi%
  422.  \put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\breite}%
  423.    \line(0,-1){\tmpa}\line(-1,-1){\tiefe}}}%
  424. }
  425.  
  426.  
  427. \def\machHLinesI{%
  428.  \tmpc=\breite\advance\tmpc by2%
  429.  \setbox\mybox=\hbox to\tmpc pt{\dotfill}
  430.  \multiput(\lxpos,\ymin)(0,\ystep){\deltay}{%
  431.   \ifdim\@ydim<\tmpa pt\lower0.8pt\copy\mybox\fi%
  432.   \ifdim\@ydim>\tmpb pt\lower0.8pt\copy\mybox\fi%
  433.  }
  434. }
  435.  
  436.  
  437. \def\machHLinesII{%
  438.  \multiput(\lxpos,\lypos)(0,\ystep){\deltay}{%
  439.   \ifdim\@ydim<\tmpa pt%
  440.     \ifdim\@ydim>\tmpc pt\ypos=\breite\advance\ypos by-\tiefe%
  441.     \else\ypos=\breite%
  442.     \fi%
  443.     \my@lstyle\ypos
  444.   \else%
  445.     \ifdim\@ydim>\tmpc pt%
  446.     \else%
  447.        \ypos=-\@ydim\divide\ypos by65536%
  448.        \advance\ypos by\lhoehe\advance\ypos by\tiefe%
  449.        \tmpe=\breite\advance\tmpe by-\ypos%
  450.        \ifnum\ypos>0\ifnum\tmpe>0\put(\tmpe,0){\my@lstyle\ypos}\fi\fi%
  451.     \fi%
  452.   \fi%
  453.   \ifdim\@ydim>\tmpb pt%
  454.    \ypos=\breite\advance\ypos by-\tiefe%
  455.    \ifdim\@ydim>\tmpd pt\ypos=\breite%
  456.    \else\ifdim\@ydim<\hoehe pt%
  457.     \else\tmpe=\@ydim\divide\tmpe by65536\advance\tmpe by-\hoehe%
  458.       \advance\ypos by\tmpe%
  459.     \fi%
  460.    \fi%
  461.    \my@lstyle\ypos
  462.   \fi%
  463.  }%
  464. \ifnum\ymove>0%
  465.   \tmpb=\ymin\advance\tmpb by-\ymove\advance\tmpb by\tiefe%
  466.   \ifnum\lhoehe>\tmpb\ypos=\breite%
  467.     \ifnum\hoehe<\tmpb\advance\ypos by-\tiefe\fi%
  468.     \put(\lxpos,\tmpb){\line(1,0){\ypos}}
  469.   \fi%
  470. \fi%
  471. }
  472.  
  473.  
  474. \def\machHLines{%
  475.  \tmpe=\baselineskip\divide\tmpe by65536\advance\tmpe by3%
  476.  \ifnum\lhoehe<0\tmpa=\lhoehe\tmpb=0\else\tmpa=0\tmpb=\lhoehe\fi%
  477.  \ifnum\hoehe<0\tmpc=\hoehe\tmpd=0\else\tmpc=0\tmpd=\hoehe\fi%
  478.  \advance\tmpb by\tiefe\advance\tmpd by\tiefe%
  479.  \advance\lxpos by\tiefe%
  480.  \lypos=\ymin\advance\lypos by\tiefe%
  481.  \machHLinesII%
  482. }
  483.  
  484.  
  485. \def\@user{}
  486. \def\my@empty{}
  487. \def\my@inside{%
  488.  \ifnum\hoehe<0\put(\xpos,\hoehe){\makebox(\breite,\tmpa){{\my@style\@user}}}%
  489.  \else\put(\xpos,0){\makebox(\breite,\tmpa){{\my@style\@user}}}%
  490.  \fi%
  491. }
  492. \def\my@outside{%
  493.   \tmpa=\hoehe%
  494.   \ifnum\hoehe<0\advance\tmpa by-6\else\advance\tmpa by\tiefe\advance\tmpa by6%
  495.   \fi%
  496.   \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  497.   \ifnum\hoehe>0\advance\tmpb by\tiefe\fi%
  498.   \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  499. }
  500. \def\my@up{%
  501.   \ifnum\hoehe>0\tmpa=\hoehe\advance\tmpa by\tiefe\advance\tmpa by8%
  502.   \else\tmpa=\tiefe\advance\tmpa by8%
  503.   \fi%
  504.   \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos\advance\tmpb by\tiefe%
  505.   \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  506. }
  507. \def\my@down{%
  508.    \ifnum\hoehe>0\tmpa=-6\else\tmpa=\hoehe\advance\tmpa by-6\fi%
  509.    \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  510.    \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  511. }
  512. \def\my@axis{%
  513.    \ifnum\hoehe>0\tmpa=-6\else\tmpa=6\fi%
  514.    \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
  515.    \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
  516. }
  517.  
  518.  
  519. \def\Monat@#1{%
  520.  \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
  521.  \tmpc=\tmpd\divide\tmpc by12\multiply\tmpc by12\advance\tmpd -\tmpc%
  522.  \put(0,-10){\makebox(0,0){{\mytmp@style%
  523.    \ifcase\tmpd Dez\or Jan\or Feb\or M\"ar\or Apr\or Mai\or Jun\or Jul%
  524.     \or Aug\or Sep\or Okt\or Nov%
  525.    \fi%
  526.  }}}%
  527. }
  528.  
  529.  
  530. \def\Tag@#1{%
  531.  \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
  532.  \tmpc=\tmpd\divide\tmpc by7\multiply\tmpc by7\advance\tmpd -\tmpc%
  533.  \put(0,-10){\makebox(0,0){{\mytmp@style%
  534.    \ifcase\tmpd Son\or Mon\or Die\or Mit\or Don\or Fre\or Sam\fi%
  535.  }}}%
  536. }
  537.  
  538.  
  539. \def\Zahl@n#1{%
  540.  \dtmpa=#1%
  541.  \put(0,-10){\makebox(0,0){{\mytmp@style\dimIIreal\dxmin}}}%
  542. }
  543.